home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb4.arc / KEYBOARD.LIB < prev    next >
Text File  |  1984-12-20  |  2KB  |  44 lines

  1. {@@@@@@@@@@@ copyright (C) 1984 by Neil J. Rubenking @@@@@@@@@@@@@@@@@@@@@@@@
  2. The purchaser of these procedures and functions may include them in COMPILED
  3. programs freely, but may not sell or give away the source text.
  4.  
  5. This function uses the keyboard BIOS interrupt $16 (decimal 22).  If "action"
  6. is 'W', the function WAITS until a key is pressed and then returns it.  If
  7. action is 'N' there is NO WAIT, and a character is returned only if there
  8. is one in the buffer.  (This is more-or-less equivalent to using TURBO's
  9. boolean "keypressed" function and "read(Kbd)".
  10.     If the key pressed has an "extended" scan code (e.g., function keys,
  11. arrow keys) the ASCIIcode will be 0.
  12.  
  13. For a chart of all scan codes, see SCANCODE.DAT
  14.  
  15. This function does NOT recognize characters generated by pressing the ALT
  16. key and typing in numbers.
  17.  
  18.    NOTE that any program that INCLUDEs this file MUST also include the
  19.    type declarations contained in REGPACK.TYP
  20. }
  21. {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
  22. function KeyBoard(action : char):integer;
  23.  
  24. var
  25.   registers : regpack;
  26.   temp      : integer;
  27. begin
  28.   with registers do
  29.     begin
  30.       case UpCase(action) of
  31.         'W': AX := 0 ;
  32.         'N': AX := 1 shl 8;
  33.       end;
  34.     intr($16,registers);
  35.     if action = 'N' then
  36.       if flags and 64 = 64 then  {zero flag set means no character}
  37.         temp := 0
  38.       else temp := KeyBoard('W')
  39.     else temp := AX;
  40.     KeyBoard := temp;
  41.   end;
  42. end;
  43. {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
  44.